package 整数之和但不能用四则运算符号;


//位运算
public class Solution
{
    //异或运算，两个操作数对应位数字都是1或0的时候为0，否则为1；->不进位的加法
    //按位与运算，两个操作数对应位数字都是1的时候才为1，否则为0；->加上左移一位就是要进的位数
    public int Add(int num1, int num2)
    {
        if (num1 == 0) return num2;
        if (num2 == 0) return num1;
        return Add(num1 ^ num2, (num1 & num2) << 1);
    }

    public int Add1(int num1, int num2)
    {
        //循环
        while (num2 != 0)
        {
            int temp = num1 ^ num2;
            num2 = (num1 & num2) << 1;
            num1 = temp;
        }
        return num1;
    }

    public static void main(String[] args)
    {
        Solution solution = new Solution();
        System.out.println(solution.Add1(1, 2));
    }
}
